#ifndef FRAME_CLASSMANAGER_H
#define FRAME_CLASSMANAGER_H


#include "graphics.h"
#include "controlManager.h"
#include "viewManager.h"

class Configs;
namespace frame { class ModelManager; } 

namespace frame {

class ClassManager {
  private:
    //Pointer to current instance of Graphics Engine
    static ::Graphics * mGraphics;

    //Pointer to current instance of Configs engine
    static ::Configs * mConfigs;

    //Pointer to current instance of ControlManager
    static ControlManager * mControlManager;

    //Pointer to current instance of ViewManager.
    static ViewManager * mViewManager;


  public:
    //Returns pointer to current Graphics engine instance.
    static ::Graphics GetGraphics();

    //Returns pointer to current instance of configuration engine.
    static  GetConfigs();

    //Static method to return pointer to current instance of ControlManager
    static ControlManager GetControlManager();

    //Static method to return pointer to current instance of ViewManager
    static ViewManager GetViewManager();


  private:
    //Static pointer to current instance of ModelManager
    static ModelManager * mModelManager;

};

} // namespace frame
#endif
